home *** CD-ROM | disk | FTP | other *** search
/ Libris Britannia 4 / science library(b).zip / science library(b) / DJGPP / QDDVX102.ZIP / contrib / dvx / qdeck / help / helpcall.c next >
Text File  |  1993-07-15  |  2KB  |  99 lines

  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <help.h>
  4.  
  5. HelpID help_id = NULL;
  6. int ntabs = 0;
  7. char **tabs = NULL;
  8. char **topics = NULL;
  9.  
  10. #define OK      0
  11. #define ERROR   1
  12.  
  13. void helpcallback(void *arg)
  14. {
  15.     /* Check for Expose or ConfigureNotify events */
  16.     /* If any available, process them, update screen etc */
  17. }
  18.  
  19. int initialize_prog()
  20. {
  21.     int rc;
  22.     char *display_name;
  23.  
  24.     if ((rc = Help_initialize(NULL,"Example Help File","EXAMPLE.HLP",
  25.         30,15,helpcallback,(void *)0,&help_id)) != H_OK) {
  26.         fprintf(stdout,"Error initializing help (%d)\n",rc);
  27.         return(ERROR);
  28.     }
  29.     if ((rc = Help_get_sections(help_id,&ntabs,&tabs,&topics)) != H_OK) {
  30.         fprintf(stdout,"Error getting sections (%d)\n",rc);
  31.         return(ERROR);
  32.     }
  33.     return(OK);
  34. }
  35.  
  36. int terminate_prog()
  37. {
  38.     int i,rc;
  39.  
  40.     if (help_id != NULL) {
  41.         if ((rc = Help_terminate(help_id)) != H_OK) {
  42.             fprintf(stdout,"Error terminating help (%d)\n",rc);
  43.             return(ERROR);
  44.         }
  45.         help_id = NULL;
  46.     }
  47.     if (tabs != NULL) {
  48.         for (i = 0; i < ntabs; i++) {
  49.             free(tabs[i]);
  50.             free(topics[i]);
  51.         }
  52.         free(tabs);
  53.         free(topics);
  54.         tabs = NULL;
  55.         topics = NULL;
  56.     }
  57.     return(OK);
  58. }
  59.  
  60.  
  61. void main (int argc, char **argv)
  62. {
  63.     int section,rc,done,selection;
  64.  
  65.     if (initialize_prog() != OK) {
  66.         terminate_prog();
  67.         exit(-1);
  68.     }
  69.  
  70.     /* main loop */
  71.     done = 0;
  72.  
  73.     while (!done) {
  74.  
  75.       fprintf(stdout,"\n");
  76.       for(section = 0; section < ntabs ; section ++)
  77.           fprintf(stdout,"Section %d: %s\n",section+1,tabs[section]);
  78.  
  79.       while (1) {
  80.         fprintf(stdout,"\nEnter section number to show or 0 to quit: ");
  81.         if (fscanf(stdin,"%d",&selection) == 1) {
  82.           if (selection == 0) {
  83.             done = 1;
  84.             break;
  85.             }
  86.           section = selection - 1;
  87.           if (section < ntabs) {
  88.             rc = Help_show(help_id,topics[section]);
  89.             if (rc != H_OK)
  90.                fprintf(stdout,"Error Help_show (%d)\n",rc);
  91.             break;
  92.             }
  93.           }
  94.         }
  95.       }
  96.  
  97.     terminate_prog();
  98. }
  99.